﻿using System;
using System.Timers;

public class Clock
{
    private Timer timer;
    private DateTime alarmTime;

    // 定义 Tick 和 Alarm 事件
    public event EventHandler Tick;
    public event EventHandler Alarm;

    public Clock()
    {
        timer = new System.Timers.Timer(1000); // 每秒触发一次
        timer.Elapsed += OnTimerElapsed;
    }

    // 设置闹钟时间
    public void SetAlarm(DateTime time)
    {
        alarmTime = time;
    }

    // 开始闹钟
    public void Start()
    {
        timer.Start();
    }

    // 停止闹钟
    public void Stop()
    {
        timer.Stop();
    }

    // 当定时器触发时调用此方法
    private void OnTimerElapsed(object sender, ElapsedEventArgs e)
    {
        // 触发 Tick 事件
        Tick?.Invoke(this, EventArgs.Empty);

        // 如果当前时间达到了设定的闹钟时间，则触发 Alarm 事件
        if (DateTime.Now >= alarmTime)
        {
            Alarm?.Invoke(this, EventArgs.Empty);
            Stop(); // 停止闹钟
        }
    }
}